class LogLogradouro < ActiveRecord::Base
    establish_connection "dbgpbe_development"
    
    private
    def self.localizar_cep(cep)
        sql =  "SELECT "
        sql += "  logradouro.cep as cep_logradouro, "
        sql += "  logradouro.log_tipo_logradouro as nome_tipo_logradouro, "
        sql += "  logradouro.log_no as nome_logradouro, "
        sql += "  logradouro.log_complemento as complemento_logradouro, "
        sql += "  bairro.bai_no as nome_bairro, "
        sql += "  bairro.bai_no_abrev as abreviacao_bairro, "
        sql += "  localidade.loc_no as nome_localidade, "
        sql += "  localidade.loc_nosub as conhecida_localidade, "
        sql += "  localidade.cep as cep_localidade, "
        sql += "  unidade_federacao.ufe_no as nome_unidade_federacao, "
        sql += "  unidade_federacao.ufe_sg as sigla_unidade_federacao, "
        sql += "  unidade_federacao.ufe_rad1_ini as cep_unidade_federacao "
        sql += "FROM "
        sql += "  dbgpbe.log_logradouro as logradouro, "
        sql += "  dbgpbe.log_bairro as bairro, "
        sql += "  dbgpbe.log_localidade as localidade, "
        sql += "  dbgpbe.log_faixa_uf as unidade_federacao "
        sql += "WHERE "
        sql += "  logradouro.cep = '#{cep}' "
        sql += "AND "
        sql += "  logradouro.bai_nu_sequencial_ini = bairro.bai_nu_sequencial "
        sql += "AND "
        sql += "  bairro.loc_nu_sequencial = localidade.loc_nu_sequencial "
        sql += "AND "
        sql += "  unidade_federacao.ufe_sg = localidade.ufe_sg "
        LogLogradouro.find_by_sql sql
    end

    def self.pesquisar_por_cep(cep)
      resultado = localizar_cep(cep)
      if not resultado.blank?
        federacao = Federacao.new
        federacao.nome = "BRASIL"
        federacao.sigla_dois_digitos = "BR"
        federacao.sigla_tres_digitos = "BRA"
        federacao.situacao = Situacao.find_by_nome("ATIVO").codigo

        unidade_federacao = UnidadeFederacao.new
        unidade_federacao.nome = resultado[0].nome_unidade_federacao.upcase
        unidade_federacao.sigla = resultado[0].sigla_unidade_federacao.upcase
        unidade_federacao.cep = resultado[0].cep_unidade_federacao
        unidade_federacao.situacao = Situacao.find_by_nome("ATIVO").codigo
        federacao.unidade_federacaos << unidade_federacao
        unidade_federacao.federacao = federacao

        localidade = Localidade.new
        localidade.nome = resultado[0].nome_localidade.upcase
        localidade.conhecida =resultado[0].conhecida_localidade.upcase
        localidade.cep = resultado[0].cep_localidade
        localidade.situacao = Situacao.find_by_nome("ATIVO").codigo
        unidade_federacao.localidades << localidade
        localidade.unidade_federacao = unidade_federacao

        bairro = Bairro.new
        bairro.nome = resultado[0].nome_bairro.upcase
        bairro.abreviacao = resultado[0].abreviacao_bairro.upcase
        bairro.situacao = Situacao.find_by_nome("ATIVO").codigo
        localidade.bairros << bairro
        bairro.localidade = localidade

        tipo_logradouro = TipoLogradouro.new
        tipo_logradouro.nome = resultado[0].nome_tipo_logradouro.upcase
        tipo_logradouro.situacao = Situacao.find_by_nome("ATIVO").codigo

        logradouro = Logradouro.new
        logradouro.nome = resultado[0].nome_logradouro.upcase
        logradouro.complemento = resultado[0].complemento_logradouro
        logradouro.cep = resultado[0].cep_logradouro
        logradouro.situacao = Situacao.find_by_nome("ATIVO").codigo
        bairro.logradouros << logradouro
        logradouro.bairro = bairro
        tipo_logradouro.logradouros << logradouro
        logradouro.tipo_logradouro = tipo_logradouro
        return federacao
      else
        resultado = nil
      end
    end   
end 